package br.com.usapre.faces;

import java.io.Serializable;

import javax.faces.context.FacesContext;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import br.com.data.Parceiro;
import br.com.data.Usuario;
import br.com.login.business.UsuarioBusiness;
import br.com.login.faces.SessionUsaPreBean;
import br.com.utilidades.faces.SimpleMessageBean;
import constantes.CONSTANTES;

/**
 * @version 1.0.0
 * @since Fevereiro,28 2013
 * @author Eduardo Francisco Barbosa
 */
@Component
@Scope("view")
public class LogadoBean extends SimpleMessageBean implements Serializable {

    private static final long serialVersionUID = 145263299756049236L;

    private SessionUsaPreBean sessionUsaPreBean;

    private UsuarioBusiness usuarioBusinessImpl;

    private Usuario usuario;
    private Parceiro parceiro;

    /**
     * Construtor
     */
    @Autowired
    public LogadoBean(SessionUsaPreBean sessionUsaPreBean, UsuarioBusiness usuarioBusinessImpl) {

	this.sessionUsaPreBean = sessionUsaPreBean;

	this.usuarioBusinessImpl = usuarioBusinessImpl;

	usuario = sessionUsaPreBean.getUsuario();
	parceiro = sessionUsaPreBean.getParceiro();

	reset();
    }

    /**
     * reset
     */
    public void reset() {

    }

    /**
     * goGerenciamentoMeuUsaCardHistorico
     */
    public void goGerenciamentoMeuUsaCardHistorico() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoMeuUsaCardHistorico.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goGerenciamentoMeuUsaCardCartaoAdicional
     */
    public void goGerenciamentoMeuUsaCardCartaoAdicional() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoMeuUsaCardCartaoAdicional.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goGerenciamentoMeuUsaCardRecarregueSeuCartao
     */
    public void goGerenciamentoMeuUsaCardRecarregueSeuCartao() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoMeuUsaCardRecarregueSeuCartao.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goGerenciamentoMeuUsaCardGerencieSeuCartao
     */
    public void goGerenciamentoMeuUsaCardGerencieSeuCartao() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoMeuUsaCardGerencieSeuCartao.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goGerenciamentoRecarregueSeuCartao
     */
    public void goGerenciamentoRecarregueSeuCartao() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoMeuUsaCardRecarregueSeuCartao.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goGerenciamentoEditarPerfil
     */
    public void goGerenciamentoEditarPerfil() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoMeuUsaCardEditarPerfil.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goRedeDesconto
     */
    public void goRedeDesconto() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoRedeDesconto.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goGerenciamentoConsulteCompareProdutos
     */
    public void goGerenciamentoConsulteCompareProdutos() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoConsulteCompareProdutos.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }
    
    /**
     * goGerenciamentoContaOfertas
     */
    public void goGerenciamentoContaOfertas() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoContaOfertas.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }
    
    /**
     * goGerenciamentoContaOfertasDrogaria
     */
    public void goGerenciamentoContaOfertasDrogaria() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoContaOfertasDrogaria.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }
    
    /**
     * goGerenciamentoContaOfertasCombustivel
     */
    public void goGerenciamentoContaOfertasCombustivel() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoContaOfertasCombustivel.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }
    
    /**
     * goGerenciamentoContaOfertasOutros
     */
    public void goGerenciamentoContaOfertasOutros() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoContaOfertasOutros.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }
    
    /**
     * goGerenciamentoRedeCompletaUsaCard
     */
    public void goGerenciamentoRedeCompletaUsaCard() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoRedeCompletaUsaCard.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goGerenciamentoMinhaLista
     */
    public void goGerenciamentoMinhaLista() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoMinhaLista.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goGerenciamentoGerenciamentoMovel
     */
    public void goGerenciamentoGerenciamentoMovel() {
	try {
	    FacesContext.getCurrentInstance().getExternalContext()
		    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoGerenciamentoMovel.jsf");
	} catch (Exception ex) {
	    ex.printStackTrace();
	}
    }

    /**
     * goHomeRecarregue
     */
    public void goHomeRecarregue() {
	if (usuario.getOrigemUsuario().equals("USA-PRÉ-INCOMPLETO")) {
	    try {
		FacesContext.getCurrentInstance().getExternalContext()
			.redirect("/" + CONSTANTES.URLUSAPRE + "/homeFinalizaCadastro.jsf");
	    } catch (Exception ex) {
		ex.printStackTrace();
	    }
	    enviaMensagem("Favor finalizar o cadastro primeiro", "Favor finalizar o cadastro primeiro");
	} else {
	    if (usuario.getOrigemUsuario().equals("USA-PRÉ-ENVIADO")) {
		try {
		    FacesContext.getCurrentInstance().getExternalContext()
			    .redirect("/" + CONSTANTES.URLUSAPRE + "/aguardeEnvioCadastro.jsf");
		} catch (Exception ex) {
		    ex.printStackTrace();
		}
		String aguardarCartao = super.getMensagem("MN_favor_aguardar_confeccao_cartao");
		enviaMensagem(aguardarCartao, aguardarCartao);
	    } else {
		try {
		    FacesContext.getCurrentInstance().getExternalContext()
			    .redirect("/" + CONSTANTES.URLUSAPRE + "/gerenciamentoMeuUsaCardRecarregueSeuCartao.jsf");
		} catch (Exception ex) {
		    ex.printStackTrace();
		}
	    }
	}

    }

    /**
     * goHomeFinalizaCadastro
     */
    public void goHomeFinalizaCadastro() {
	if (usuario.getOrigemUsuario().equals("USA-PRÉ-ENVIADO")) {

	} else {
	    try {
		FacesContext.getCurrentInstance().getExternalContext()
			.redirect("/" + CONSTANTES.URLUSAPRE + "/homeFinalizaCadastro.jsf");
	    } catch (Exception ex) {
		ex.printStackTrace();
	    }
	}
    }

    // SETS AND GETS
    public SessionUsaPreBean getSessionUsaPreBean() {
	return sessionUsaPreBean;
    }

    public void setSessionUsaPreBean(SessionUsaPreBean sessionUsaPreBean) {
	this.sessionUsaPreBean = sessionUsaPreBean;
    }

    public UsuarioBusiness getUsuarioBusinessImpl() {
	return usuarioBusinessImpl;
    }

    public void setUsuarioBusinessImpl(UsuarioBusiness usuarioBusinessImpl) {
	this.usuarioBusinessImpl = usuarioBusinessImpl;
    }

    public Usuario getUsuario() {
	return usuario;
    }

    public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
    }

    public Parceiro getParceiro() {
	return parceiro;
    }

    public void setParceiro(Parceiro parceiro) {
	this.parceiro = parceiro;
    }

}
